package com.mall.coupon;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

/**
 *   一  如何使用 Nacos 作为配置中心统一管理配置
 *          1--引入依赖  spring-cloud-starter-alibab-nacos-config
 *           2--创建一个bootstrap.properties 里面的配置为
 *              spring.application.name=coupon
 *              spring.cloud.nacos.config.server-addr=127.0.0.1:8848
 *          3--需要给配置中心(nacos中)默认添加一个叫 数据集(Data Id)  规则：应用名.properties   例如--coupon. properties
 *          4--在  应用名.properties中 添加 任何配置信息
 *          5--动态获取配置   在控制层添加注解 @RefreshScope: 动态获取并刷新配置
 *          注意：如果配置中心(nacos)和当前应用的配置文件(application.yml或者别的配置文件)都配置了相同的配置信息，优先采用配置中心的配置信息
 *  二  Nacos配置中心的一些细节说明：
 *        1）命名空间 ：(作用)配置隔离
 *                  默认是 public(保留空间)：默认新增的所有配置都在 public空间
 *                  1--可以根据 开发，测试，生产，利用命名空间来做环境隔离(生产一个空间，测试一个，开发一个，彼此隔离)
 *                  2--可以根据 微服务之间的系统模块进行隔离，每一个微服务都创建自己的命名空间，只加载自己命名空间下的所有配置。
 *                       注意： 在bootstrap.properties的配置文件上，如果不指定使用哪个命名空间则使用默认的public，
 *                                      如果需要读取自定义的命名空间，bootstrap.properties添加配置信息：
 *                                      spring.cloud.nacos.config.namespace=e30a2b4e-f485-4341-a65d-23fa96f804c8
 *        2）配置集：所有配置的集合
 *        3）配置集ID:  (Data Id)--类似文件名
 *        4) 配置分组： 默认所有的配置集都属于：DEFAULT_GROUP  这个组
 *              可以自定义分组   dev, prod,test
 *          总结: 一般 我们可以 根据微服务之间的系统模块建立不同的命名空间，再每一个命名空间下，可以利用 自定义分组 进行环境区分 ,
 *              设 test(组里添加测试环境配置)，dev(组里添加开发环境配置),prod(组里添加生产环境配置)
 *
 *   三 同时加载多个配置文件
 *       1）微服务任何配置信息，任何配置文件都可以放在配置中心中
 *       2）只需要在bootstrap.properties说明加载配置中心哪些配置文件即可
 *       3）@Value ,@ConfigurationProperties等以前springboot任何方法从配置文件中获取值的注解都能使用
 *       4）配置中心有的优先使用配置中心中的
 */
@SpringBootApplication
@EnableDiscoveryClient
public class MallCouponApplication {

    public static void main(String[] args) {
        SpringApplication.run(MallCouponApplication.class, args);
    }

}
